package com.ltf.controller;

import com.ltf.dao.KindDao;
import com.ltf.dao.ProdDao;
import com.ltf.entity.Kind;
import com.ltf.entity.Prod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api/prod")
public class ProdController {

    @Autowired(required = false)
    private ProdDao prodMapper;
    @Autowired(required = false)
    private KindDao kindMapper;

    //获取所有产品列表
    @GetMapping("/findAll")
    public List<Prod> findAll() {
        System.out.println("这个是查询所有......");
        List<Prod> all = prodMapper.findAll();
        System.out.println(all);
        return prodMapper.findAll();
    }

  //获取所有产品分类信息
    @GetMapping("/findKinds")
    public List<Kind> findKinds() {
        return kindMapper.findKinds();
    }

    /**
     * 删除指定产品
     * @param id 需要删除的产品ID
     * @param pagenum 当前页码（用于分页）
     * @param lines 每页显示行数（用于分页）
     * @return 返回操作结果映射，包含状态码和操作信息
     */
    @PostMapping("/remove/{id}")
    public Map<String, Object> remove(@PathVariable("id") Integer id, Integer pagenum, Integer lines) {
        System.out.println(id);
        System.out.println("这个是删除......");
        prodMapper.remove(id);

        // 假设这里执行了删除操作并返回结果
        return Map.of("status", "success", "message", "删除成功");
    }

    //添加
    @PostMapping("/add")
    public Map<String, Object> add(Prod prod) {
        System.out.println("添加.....");
        prodMapper.add(prod);
        // 假设这里执行了添加操作并返回结果
        return Map.of("status", "success", "message", "产品添加成功");
    }


//    /**
//     * 条件查询产品信息
//     * @param Kid 分类ID筛选条件
//     * @param p1 价格区间下限（可选）
//     * @param p2 价格区间上限（可选）
//     * @return 返回符合条件的产品列表
//     */
//    SELECT * FROM t_prod WHERE kid = #{Kid} AND price BETWEEN #{p1} AND #{p2}
    @GetMapping("/findif")
    public List<Prod> findIf(Integer Kid, Double p1, Double p2) {
        System.out.println("条件查询.....");
        System.out.println();
        System.out.println(Kid+"的"+p1+"到"+p2);
        return prodMapper.findIf(Kid, p1, p2);
    }
//
//    /**
//     * 分页条件查询产品信息
//     * @param Kid 分类ID筛选条件
//     * @param p1 价格区间下限（可选）
//     * @param p2 价格区间上限（可选）
//     * @param pagenum 当前页码
//     * @param lines 每页显示行数
//     * @return 返回分页结果映射，包含数据列表和分页信息
//     */
    @GetMapping("/findPage")
    public Map<String, Object> findPage(Integer Kid, Double p1, Double p2, Integer pagenum, Integer lines) {
        List<Prod> products = prodMapper.findPage(Kid, p1, p2, pagenum, lines);
        int totalCount = prodMapper.getCount(Kid, p1, p2);
        return Map.of("products", products, "total", totalCount);
    }
//
//    /**
//     * 更新产品信息
//     * @param prod 包含更新数据的产品对象
//     * @param pagenum 当前页码（用于分页）
//     * @param lines 每页显示行数（用于分页）
//     * @param myfile 可选的上传图片文件
//     * @return 返回操作结果映射，包含状态码和操作信息
//     * @throws Exception 可能抛出文件操作相关异常
//     */
    @PostMapping("/update")
    public Map<String, Object> doUpdate(Prod prod, Integer pagenum, Integer lines,
                                        @RequestParam(value = "mypic", required = false) MultipartFile myfile) throws Exception {
        System.out.println(prod+"的"+pagenum+"到"+lines);
        System.out.println("更新.....");
        prodMapper.update(prod);
        // 假设这里执行了更新操作并返回结果
        return Map.of("status", "success", "message", "产品更新成功");
    }
//
//    /**
//     * 显示产品图片
//     * @param id 产品ID
//     * @param response HTTP响应对象，用于输出图片流
//     */
//    @GetMapping("/showimg/{id}")
//    public void display(@PathVariable String id, HttpServletResponse response) {
//        System.out.println("显示图片");
//        // 假设这里处理了图片显示逻辑
//    }

}
